<?xml version="1.0" encoding="UTF-8"?>
<model modelUID="r:21edd6d3-9dd2-4ade-a658-ffd86bf00d9e(jsh.typesystem)">
  <persistence version="3" />
  <refactoringHistory />
  <language namespace="7a5dda62-9140-4668-ab76-d5ed1746f2b2(jetbrains.mps.lang.typesystem)" />
  <language namespace="5d0fe47c-3d83-454a-b97b-b0d4fd84c092(jsh)" />
  <language namespace="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" />
  <language namespace="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" />
  <language namespace="83888646-71ce-4f1c-9c53-c54016f6ad4f(jetbrains.mps.baseLanguage.collections)" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590340(jetbrains.mps.lang.pattern.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590338(jetbrains.mps.baseLanguage.closures.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ae(jetbrains.mps.lang.typesystem.constraints)" version="17" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959028c(jetbrains.mps.lang.structure.constraints)" version="11" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590345(jetbrains.mps.lang.pattern.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902fb(jetbrains.mps.lang.smodel.constraints)" version="21" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590292(jetbrains.mps.lang.structure.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590301(jetbrains.mps.lang.smodel.structure)" version="16" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590283(jetbrains.mps.lang.core.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902b4(jetbrains.mps.lang.typesystem.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902db(jetbrains.mps.baseLanguage.blTypes.constraints)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590334(jetbrains.mps.baseLanguage.closures.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902c1(jetbrains.mps.baseLanguage.constraints)" version="83" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959033d(jetbrains.mps.lang.annotations.structure)" version="0" />
  <languageAspect modelUID="r:89beeebe-c409-404a-ac09-da8c5edd700a(jsh.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959034b(jetbrains.mps.lang.quotation.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959032e(jetbrains.mps.baseLanguage.collections.structure)" version="7" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590328(jetbrains.mps.baseLanguage.collections.constraints)" version="6" />
  <devkit namespace="2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)" />
  <maxImportIndex value="5" />
  <import index="1" modelUID="r:89beeebe-c409-404a-ac09-da8c5edd700a(jsh.structure)" version="0" />
  <import index="2" modelUID="f:java_stub#java.util(java.util@java_stub)" version="-1" />
  <import index="3" modelUID="f:java_stub#java.lang(java.lang@java_stub)" version="-1" />
  <import index="4" modelUID="f:java_stub#java.io(java.io@java_stub)" version="-1" />
  <import index="5" modelUID="r:e6f19801-1388-44df-81c3-9b5eba7fef84(jsh)" version="-1" />
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="9089975049423920287">
    <property name="name" value="typeof_Ls" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="9089975049423920288">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="9089975049424131105">
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424131106">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="9089975049424131107">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="9089975049424131108">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="9089975049424131109">
                <link role="applicableNode" targetNodeId="9089975049423920289" resolveInfo="ls" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="9089975049424131110">
                <link role="link" targetNodeId="1.8018066996452131723" />
              </node>
            </node>
          </node>
        </node>
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424131111">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="9089975049424131112">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.StringType" id="9089975049424131113" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateStrongLessThanInequationStatement" id="9089975049424234678">
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424234681">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="9089975049424234673">
            <node role="term" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="9089975049424234677">
              <link role="applicableNode" targetNodeId="9089975049423920289" resolveInfo="ls" />
            </node>
          </node>
        </node>
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424235718">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="9089975049424235719">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424341388">
              <link role="classifier" targetNodeId="3.~Iterable" resolveInfo="Iterable" />
              <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424341655">
                <link role="classifier" targetNodeId="4.~File" resolveInfo="File" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="9089975049423920289">
      <property name="name" value="ls" />
      <link role="concept" targetNodeId="1.8018066996451895643" resolveInfo="Ls" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="9089975049424446115">
    <property name="name" value="typeof_Grep" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="9089975049424446116">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="9089975049424447355">
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424447358">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="9089975049424446126">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="9089975049424446137">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="9089975049424446136">
                <link role="applicableNode" targetNodeId="9089975049424446117" resolveInfo="grep" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="9089975049424447354">
                <link role="link" targetNodeId="1.8018066996452279530" />
              </node>
            </node>
          </node>
        </node>
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424447359">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="9089975049424447360">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.StringType" id="9089975049424447362" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateStrongLessThanInequationStatement" id="9089975049424447370">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424447374">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="9089975049424447375">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424447380">
              <link role="classifier" targetNodeId="5.2875089326488171830" resolveInfo="Func" />
              <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424447397">
                <link role="classifier" targetNodeId="3.~Iterable" resolveInfo="Iterable" />
                <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424447399">
                  <link role="classifier" targetNodeId="4.~File" resolveInfo="File" />
                </node>
              </node>
              <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424447401">
                <link role="classifier" targetNodeId="3.~Iterable" resolveInfo="Iterable" />
                <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="9089975049424447403">
                  <link role="classifier" targetNodeId="4.~File" resolveInfo="File" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="9089975049424447373">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="9089975049424447365">
            <node role="term" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="9089975049424447369">
              <link role="applicableNode" targetNodeId="9089975049424446117" resolveInfo="grep" />
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="9089975049424446117">
      <property name="name" value="grep" />
      <link role="concept" targetNodeId="1.8018066996452279527" resolveInfo="Grep" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.NonTypesystemRule" id="3167516689502415306">
    <property name="name" value="CheckLsThrows" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502415307">
      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="3167516689502653846">
        <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="3167516689502653848">
          <link role="baseMethodDeclaration" targetNodeId="3167516689502415316" resolveInfo="checkThrows" />
          <link role="classConcept" targetNodeId="3167516689502415310" resolveInfo="RuleUtil" />
          <node role="actualArgument" type="jetbrains.mps.lang.quotation.structure.Quotation" id="3167516689502653855">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="3167516689502653858">
              <link role="classifier" targetNodeId="4.~IOException" resolveInfo="IOException" />
            </node>
          </node>
          <node role="actualArgument" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="3167516689502653853">
            <link role="applicableNode" targetNodeId="3167516689502415309" resolveInfo="ls" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="3167516689502415309">
      <property name="name" value="ls" />
      <link role="concept" targetNodeId="1.8018066996451895643" resolveInfo="Ls" />
    </node>
  </node>
  <visible index="2" modelUID="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" />
  <visible index="3" modelUID="r:00000000-0000-4000-0000-011c895902c5(jetbrains.mps.baseLanguage.typesystem)" />
  <visible index="4" modelUID="r:00000000-0000-4000-0000-011c895902b5(jetbrains.mps.lang.typesystem.dependencies)" />
  <node type="jetbrains.mps.baseLanguage.structure.ClassConcept" id="3167516689502415310">
    <property name="name" value="RuleUtil" />
    <node role="staticMethod" type="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" id="3167516689502415316">
      <property name="name" value="checkThrows" />
      <node role="returnType" type="jetbrains.mps.baseLanguage.structure.VoidType" id="3167516689502415317" />
      <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="3167516689502415318" />
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502415319">
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418720">
          <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418721">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3167516689502419000" />
          </node>
          <node role="condition" type="jetbrains.mps.baseLanguage.structure.OrExpression" id="3167516689502418727">
            <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" id="3167516689502418728">
              <node role="subtypeExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502418998">
                <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
              </node>
              <node role="supertypeExpression" type="jetbrains.mps.lang.quotation.structure.Quotation" id="3167516689502418730">
                <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="3167516689502418731">
                  <link role="classifier" targetNodeId="3.~Error" resolveInfo="Error" />
                </node>
              </node>
            </node>
            <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" id="3167516689502418732">
              <node role="subtypeExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502418997">
                <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
              </node>
              <node role="supertypeExpression" type="jetbrains.mps.lang.quotation.structure.Quotation" id="3167516689502418734">
                <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="3167516689502418735">
                  <link role="classifier" targetNodeId="3.~RuntimeException" resolveInfo="RuntimeException" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418748">
          <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418749">
            <property name="name" value="statementLists" />
            <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="3167516689502418750">
              <link role="elementConcept" targetNodeId="2v.1068580123136" resolveInfo="StatementList" />
            </node>
            <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418751">
              <node role="operand" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502418752">
                <link role="variableDeclaration" targetNodeId="3167516689502415324" resolveInfo="mainNode" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorsOperation" id="3167516689502418753">
                <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="3167516689502418754">
                  <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3167516689502418755">
                    <link role="conceptDeclaration" targetNodeId="2v.1068580123136" resolveInfo="StatementList" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.ForeachStatement" id="3167516689502418756">
          <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418757">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418758">
              <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418759">
                <property name="name" value="parent" />
                <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418760" />
                <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418761">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418762">
                    <link role="variableDeclaration" targetNodeId="3167516689502418954" resolveInfo="statementList" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="3167516689502418763" />
                </node>
              </node>
            </node>
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418764">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418765">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418766">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418767">
                    <property name="name" value="tryStatement" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418768">
                      <link role="concept" targetNodeId="2v.1153952380246" resolveInfo="TryStatement" />
                    </node>
                    <node role="initializer" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418769">
                      <link role="concept" targetNodeId="2v.1153952380246" resolveInfo="TryStatement" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418770">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ForeachStatement" id="3167516689502418771">
                  <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418772">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418773">
                      <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418774">
                        <property name="name" value="throwableType" />
                        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418775">
                          <link role="concept" targetNodeId="2v.1068431790189" resolveInfo="Type" />
                        </node>
                        <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418776">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418777">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418778">
                              <link role="variableDeclaration" targetNodeId="3167516689502418802" resolveInfo="catchClause" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418779">
                              <link role="link" targetNodeId="2v.1164903359217" />
                            </node>
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418780">
                            <link role="link" targetNodeId="2v.5680397130376446158" />
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418783">
                      <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418784">
                        <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3167516689502419003" />
                      </node>
                      <node role="condition" type="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" id="3167516689502418790">
                        <node role="subtypeExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502419002">
                          <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
                        </node>
                        <node role="supertypeExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418792">
                          <link role="variableDeclaration" targetNodeId="3167516689502418774" resolveInfo="throwableType" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="iterable" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418799">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418800">
                      <link role="variableDeclaration" targetNodeId="3167516689502418767" resolveInfo="tryStatement" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="3167516689502418801">
                      <link role="link" targetNodeId="2v.1164903700860" />
                    </node>
                  </node>
                  <node role="variable" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418802">
                    <property name="name" value="catchClause" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418803">
                      <link role="concept" targetNodeId="2v.1164903280175" resolveInfo="CatchClause" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3167516689502418804">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="3167516689502418805">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418806">
                    <link role="variableDeclaration" targetNodeId="3167516689502418954" resolveInfo="statementList" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418807">
                    <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418808">
                      <link role="concept" targetNodeId="2v.1153952380246" resolveInfo="TryStatement" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418809">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418810">
                      <link role="link" targetNodeId="2v.1153952416686" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418811">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418812">
                    <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3167516689502418813">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3167516689502418814">
                      <link role="conceptDeclaration" targetNodeId="2v.1153952380246" resolveInfo="TryStatement" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418821">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418822">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418823">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418824">
                    <property name="name" value="tryCatchStatement" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418825">
                      <link role="concept" targetNodeId="2v.1164879751025" resolveInfo="TryCatchStatement" />
                    </node>
                    <node role="initializer" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418826">
                      <link role="concept" targetNodeId="2v.1164879751025" resolveInfo="TryCatchStatement" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418827">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ForeachStatement" id="3167516689502418828">
                  <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418829">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418830">
                      <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418831">
                        <property name="name" value="throwableType" />
                        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418832">
                          <link role="concept" targetNodeId="2v.1068431790189" resolveInfo="Type" />
                        </node>
                        <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418833">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418834">
                            <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418835">
                              <link role="variableDeclaration" targetNodeId="3167516689502418859" resolveInfo="catchClause" />
                            </node>
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418836">
                              <link role="link" targetNodeId="2v.1164903359217" />
                            </node>
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418837">
                            <link role="link" targetNodeId="2v.5680397130376446158" />
                          </node>
                        </node>
                      </node>
                    </node>
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418840">
                      <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418841">
                        <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3167516689502419006" />
                      </node>
                      <node role="condition" type="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" id="3167516689502418847">
                        <node role="subtypeExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502419005">
                          <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
                        </node>
                        <node role="supertypeExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418849">
                          <link role="variableDeclaration" targetNodeId="3167516689502418831" resolveInfo="throwableType" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="iterable" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418856">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418857">
                      <link role="variableDeclaration" targetNodeId="3167516689502418824" resolveInfo="tryCatchStatement" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="3167516689502418858">
                      <link role="link" targetNodeId="2v.1164903496223" />
                    </node>
                  </node>
                  <node role="variable" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418859">
                    <property name="name" value="catchClause" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418860">
                      <link role="concept" targetNodeId="2v.1164903280175" resolveInfo="CatchClause" />
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3167516689502418861">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="3167516689502418862">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418863">
                    <link role="variableDeclaration" targetNodeId="3167516689502418954" resolveInfo="statementList" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418864">
                    <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418865">
                      <link role="concept" targetNodeId="2v.1164879751025" resolveInfo="TryCatchStatement" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418866">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418867">
                      <link role="link" targetNodeId="2v.1164879758292" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418868">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418869">
                    <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3167516689502418870">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3167516689502418871">
                      <link role="conceptDeclaration" targetNodeId="2v.1164879751025" resolveInfo="TryCatchStatement" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418878">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418879">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502418880">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418881">
                    <property name="name" value="baseMethodDeclaration" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418882">
                      <link role="concept" targetNodeId="2v.1068580123132" resolveInfo="BaseMethodDeclaration" />
                    </node>
                    <node role="initializer" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418883">
                      <link role="concept" targetNodeId="2v.1068580123132" resolveInfo="BaseMethodDeclaration" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418884">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ForeachStatement" id="3167516689502418885">
                  <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418886">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="3167516689502418889">
                      <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502418890">
                        <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="3167516689502419012" />
                      </node>
                      <node role="condition" type="jetbrains.mps.lang.typesystem.structure.IsSubtypeExpression" id="3167516689502418896">
                        <node role="subtypeExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502419008">
                          <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
                        </node>
                        <node role="supertypeExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418898">
                          <link role="variableDeclaration" targetNodeId="3167516689502418908" resolveInfo="throwableType" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="iterable" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418905">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418906">
                      <link role="variableDeclaration" targetNodeId="3167516689502418881" resolveInfo="baseMethodDeclaration" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="3167516689502418907">
                      <link role="link" targetNodeId="2v.1164879685961" />
                    </node>
                  </node>
                  <node role="variable" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418908">
                    <property name="name" value="throwableType" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418909">
                      <link role="concept" targetNodeId="2v.1068431790189" resolveInfo="Type" />
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="3167516689502771995">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502771996">
                    <property name="name" value="complaint" />
                    <node role="type" type="jetbrains.mps.baseLanguage.structure.StringType" id="3167516689502771997" />
                    <node role="initializer" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="3167516689502771998">
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502771999">
                        <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
                      </node>
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="3167516689502772000">
                        <property name="value" value="uncaught exception " />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.lang.typesystem.structure.ReportErrorStatement" id="3167516689502418929">
                  <node role="errorString" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502772001">
                    <link role="variableDeclaration" targetNodeId="3167516689502771996" resolveInfo="compaint" />
                  </node>
                  <node role="nodeToReport" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502418931">
                    <link role="variableDeclaration" targetNodeId="3167516689502415324" resolveInfo="mainNode" />
                  </node>
                  <node role="helginsIntention" type="jetbrains.mps.lang.typesystem.structure.TypesystemIntention" id="3167516689502418932">
                    <property name="applyImmediately" value="false" />
                    <link role="quickFix" targetNodeId="3v.1216393886413" resolveInfo="AddExceptionToMethodSignature" />
                    <node role="actualArgument" type="jetbrains.mps.lang.typesystem.structure.TypesystemIntentionArgument" id="3167516689502418933">
                      <link role="quickFixArgument" targetNodeId="3v.1216393910650" resolveInfo="throwableType" />
                      <node role="value" type="jetbrains.mps.baseLanguage.structure.ParameterReference" id="3167516689502419021">
                        <link role="variableDeclaration" targetNodeId="3167516689502415322" resolveInfo="checkedException" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.AndExpression" id="3167516689502418942">
                <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.EqualsExpression" id="3167516689502418943">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418944">
                    <link role="variableDeclaration" targetNodeId="3167516689502418954" resolveInfo="statementList" />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418945">
                    <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="3167516689502418946">
                      <link role="concept" targetNodeId="2v.1068580123132" resolveInfo="BaseMethodDeclaration" />
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418947">
                        <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="3167516689502418948">
                      <link role="link" targetNodeId="2v.1068580123135" />
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="3167516689502418949">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418950">
                    <link role="variableDeclaration" targetNodeId="3167516689502418759" resolveInfo="parent" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="3167516689502418951">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="3167516689502418952">
                      <link role="conceptDeclaration" targetNodeId="2v.1068580123132" resolveInfo="BaseMethodDeclaration" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="iterable" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="3167516689502418953">
            <link role="variableDeclaration" targetNodeId="3167516689502418749" resolveInfo="statementLists" />
          </node>
          <node role="variable" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="3167516689502418954">
            <property name="name" value="statementList" />
            <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502418955">
              <link role="concept" targetNodeId="2v.1068580123136" resolveInfo="StatementList" />
            </node>
          </node>
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="3167516689502415322">
        <property name="name" value="checkedException" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502415323">
          <link role="concept" targetNodeId="2v.1068431790189" resolveInfo="Type" />
        </node>
      </node>
      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" id="3167516689502415324">
        <property name="name" value="node" />
        <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="3167516689502415326" />
      </node>
      <node role="annotation" type="jetbrains.mps.baseLanguage.structure.AnnotationInstance" id="3167516689502422321">
        <link role="annotation" targetNodeId="4v.1223644778913" resolveInfo="CheckingMethod" />
      </node>
    </node>
    <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="3167516689502415311" />
    <node role="constructor" type="jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" id="3167516689502415312">
      <node role="returnType" type="jetbrains.mps.baseLanguage.structure.VoidType" id="3167516689502415313" />
      <node role="visibility" type="jetbrains.mps.baseLanguage.structure.PublicVisibility" id="3167516689502415314" />
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="3167516689502415315" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="7747186999601536992">
    <property name="name" value="typeof_Pipe" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7747186999601536993">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.TypeVarDeclaration" id="7747186999601609598">
        <property name="name" value="rightExpressionType" />
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.TypeVarDeclaration" id="7747186999601609599">
        <property name="name" value="leftExpressionType" />
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="7747186999601609600">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609601">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="7747186999601609602">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7747186999601609603">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7747186999601609649">
                <link role="applicableNode" targetNodeId="7747186999601536994" resolveInfo="pipe" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7747186999601997511">
                <link role="link" targetNodeId="1.7747186999601994838" />
              </node>
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609606">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601609607">
            <link role="typeVarDeclaration" targetNodeId="7747186999601609598" resolveInfo="rightExpressionType" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="7747186999601609608">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609609">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="7747186999601609610">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="7747186999601609611">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7747186999601609650">
                <link role="applicableNode" targetNodeId="7747186999601536994" resolveInfo="pipe" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="7747186999601997512">
                <link role="link" targetNodeId="1.7747186999601994839" />
              </node>
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609614">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601609615">
            <link role="typeVarDeclaration" targetNodeId="7747186999601609599" resolveInfo="leftExpressionType" />
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteStatement" id="7747186999601609616">
        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7747186999601609617">
          <node role="statement" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteStatement" id="7747186999601609618">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7747186999601609619">
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.TypeVarDeclaration" id="7747186999601612759">
                <property name="name" value="D" />
              </node>
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.TypeVarDeclaration" id="7747186999601612773">
                <property name="name" value="R" />
              </node>
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateStrongLessThanInequationStatement" id="7747186999601612763">
                <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601878019">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601878020">
                    <link role="typeVarDeclaration" targetNodeId="7747186999601612759" resolveInfo="T" />
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601878017">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteVariableReference" id="7747186999601878018">
                    <link role="whenConcreteVar" targetNodeId="7747186999601609647" resolveInfo="leftType" />
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="7747186999601609670">
                <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609674">
                  <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="7747186999601609675">
                    <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="7747186999601609679">
                      <link role="classifier" targetNodeId="5.2875089326488171830" resolveInfo="Func" />
                      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.Type" id="7747186999601751521">
                        <node role="_attr_$attribute" type="jetbrains.mps.lang.quotation.structure.Antiquotation" id="7747186999601751522">
                          <node role="expression" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601751524">
                            <link role="typeVarDeclaration" targetNodeId="7747186999601612759" resolveInfo="T" />
                          </node>
                        </node>
                      </node>
                      <node role="parameter" type="jetbrains.mps.baseLanguage.structure.Type" id="7747186999601612774">
                        <node role="_attr_$attribute" type="jetbrains.mps.lang.quotation.structure.Antiquotation" id="7747186999601612775">
                          <node role="expression" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601612777">
                            <link role="typeVarDeclaration" targetNodeId="7747186999601612773" resolveInfo="U" />
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601609673">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteVariableReference" id="7747186999601609669">
                    <link role="whenConcreteVar" targetNodeId="7747186999601609644" resolveInfo="rightType" />
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateEquationStatement" id="7747186999601612783">
                <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601612787">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601612788">
                    <link role="typeVarDeclaration" targetNodeId="7747186999601612773" resolveInfo="U" />
                  </node>
                </node>
                <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="7747186999601612786">
                  <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="7747186999601612780">
                    <node role="term" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="7747186999601612782">
                      <link role="applicableNode" targetNodeId="7747186999601536994" resolveInfo="pipe" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
            <node role="argument" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601609643">
              <link role="typeVarDeclaration" targetNodeId="7747186999601609598" resolveInfo="rightExpressionType" />
            </node>
            <node role="argumentRepresentator" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteVariableDeclaration" id="7747186999601609644">
              <property name="name" value="rightType" />
              <node role="type" type="jetbrains.mps.baseLanguage.structure.Type" id="7747186999601609645" />
            </node>
          </node>
        </node>
        <node role="argument" type="jetbrains.mps.lang.typesystem.structure.TypeVarReference" id="7747186999601609646">
          <link role="typeVarDeclaration" targetNodeId="7747186999601609599" resolveInfo="leftExpressionType" />
        </node>
        <node role="argumentRepresentator" type="jetbrains.mps.lang.typesystem.structure.WhenConcreteVariableDeclaration" id="7747186999601609647">
          <property name="name" value="leftType" />
          <node role="type" type="jetbrains.mps.baseLanguage.structure.Type" id="7747186999601609648" />
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7747186999601536994">
      <property name="name" value="pipe" />
      <link role="concept" targetNodeId="1.7747186999601534396" resolveInfo="Pipe" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.typesystem.structure.InferenceRule" id="7747186999602282707">
    <property name="name" value="typeof_Direct" />
    <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="7747186999602282708">
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateStrongLessThanInequationStatement" id="8037047503614630644">
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8037047503614630648">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="8037047503614630649">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="8037047503614630652">
              <link role="classifier" targetNodeId="3.~Iterable" resolveInfo="Iterable" />
              <node role="parameter" type="jetbrains.mps.baseLanguage.structure.ClassifierType" id="8037047503614630654">
                <link role="classifier" targetNodeId="4.~File" resolveInfo="File" />
              </node>
            </node>
          </node>
        </node>
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8037047503614630647">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="8037047503614620992">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8037047503614629424">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8037047503614629423">
                <link role="applicableNode" targetNodeId="7747186999602282709" resolveInfo="direct" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8037047503614630641">
                <link role="link" targetNodeId="1.7747186999602282688" />
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="statement" type="jetbrains.mps.lang.typesystem.structure.CreateStrongLessThanInequationStatement" id="8037047503614632957">
        <node role="leftExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8037047503614632960">
          <node role="normalType" type="jetbrains.mps.lang.typesystem.structure.TypeOfExpression" id="8037047503614632948">
            <node role="term" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8037047503614632951">
              <node role="operand" type="jetbrains.mps.lang.typesystem.structure.ApplicableNodeReference" id="8037047503614632950">
                <link role="applicableNode" targetNodeId="7747186999602282709" resolveInfo="direct" />
              </node>
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="8037047503614632955">
                <link role="link" targetNodeId="1.7747186999602282691" />
              </node>
            </node>
          </node>
        </node>
        <node role="rightExpression" type="jetbrains.mps.lang.typesystem.structure.NormalTypeClause" id="8037047503614632961">
          <node role="normalType" type="jetbrains.mps.lang.quotation.structure.Quotation" id="8037047503614632962">
            <node role="quotedNode" type="jetbrains.mps.baseLanguage.structure.StringType" id="8037047503614632964" />
          </node>
        </node>
      </node>
    </node>
    <node role="applicableNode" type="jetbrains.mps.lang.typesystem.structure.ConceptReference" id="7747186999602282709">
      <property name="name" value="direct" />
      <link role="concept" targetNodeId="1.7747186999602282685" resolveInfo="Direct" />
    </node>
  </node>
</model>

